System.Collections.Generic.HashSet<T-Klasse>
Dieser Artikel enthält ergänzende Hinweise zur Referenzdokumentation für diese API.
Die HashSet<T> Klasse bietet Hochleistungs-Set-Vorgänge. Ein Satz ist eine Auflistung, die keine doppelten Elemente enthält und deren Elemente in keiner bestimmten Reihenfolge angeordnet sind.
Die Kapazität eines HashSet<T> Objekts ist die Anzahl der Elemente, die das Objekt enthalten kann. Die Kapazität eines HashSet<T> Objekts erhöht sich automatisch, wenn dem Objekt Elemente hinzugefügt werden.
Die HashSet<T> Klasse basiert auf dem Modell der mathematischen Sätze und bietet leistungsstarke Satzvorgänge, die dem Zugriff auf die Schlüssel der Dictionary<TKey,TValue> Auflistungen ähneln Hashtable . In einfachen Worten kann die HashSet<T> Klasse als Dictionary<TKey,TValue> Sammlung ohne Werte betrachtet werden.
Eine HashSet<T> Auflistung ist nicht sortiert und darf keine doppelten Elemente enthalten. Wenn die Reihenfolge oder Elementduplizierung wichtiger als die Leistung ihrer Anwendung ist, sollten Sie die List<T> Klasse zusammen mit der Sort Methode verwenden.
HashSet<T> stellt viele mathematische Satzvorgänge bereit, z. B. Set Addition (Vereinigungen) und Subtraktion festlegen. In der folgenden Tabelle sind die bereitgestellten HashSet<T> Vorgänge und ihre mathematischen Entsprechungen aufgeführt.
HashSet-Vorgang | Mathematische Entsprechung |
---|---|
UnionWith | Union oder Addition festlegen |
IntersectWith | Schnittmenge |
ExceptWith | Subtraktion festlegen |
SymmetricExceptWith | Symmetrischer Unterschied |
Zusätzlich zu den aufgelisteten Satzvorgängen stellt die HashSet<T> Klasse auch Methoden zum Bestimmen der Setgleichheit, Überlappung von Sätzen und ob ein Satz eine Teilmenge oder Eine Obermenge eines anderen Satzes ist.
.NET Framework nur: Bei sehr großen HashSet<T> Objekten können Sie die maximale Kapazität auf 2 Milliarden Elemente auf einem 64-Bit-System erhöhen, indem Sie das enabled
Attribut des <gcAllowVeryLargeObjects>
Konfigurationselements true
in der Laufzeitumgebung festlegen.
Die HashSet<T>-Klasse implementiert die ISet<T>-Schnittstelle.
HashSet- und LINQ-Set-Vorgänge
LINQ bietet Zugriff auf die Distinct
Vorgänge , Union
, Intersect
und Except
legt Vorgänge für jede Datenquelle fest, die die IEnumerable Oder IQueryable Schnittstellen implementiert. HashSet<T> bietet eine größere und stabilere Sammlung von Satzvorgängen. Stellt z. B HashSet<T> . Vergleiche wie IsSubsetOf z. B. und IsSupersetOf.
Der Hauptunterschied zwischen LINQ-Satzvorgängen und HashSet<T> -vorgängen besteht darin, dass LINQ-Setvorgänge immer eine neue IEnumerable<T> Auflistung zurückgeben, während die HashSet<T> entsprechenden Methoden die aktuelle Auflistung ändern.
Wenn Sie in der Regel einen neuen Satz erstellen müssen oder ihre Anwendung nur Zugriff auf die bereitgestellten Satzvorgänge benötigt, reicht die Verwendung von LINQ-Set-Vorgängen für eine sammlung IEnumerable<T> oder ein Array aus. Wenn Ihre Anwendung jedoch Zugriff auf zusätzliche Satzvorgänge erfordert oder wenn es nicht wünschenswert oder erforderlich ist, eine neue Auflistung zu erstellen, verwenden Sie die HashSet<T> Klasse.
In der folgenden Tabelle sind die HashSet<T> Vorgänge und die entsprechenden LINQ-Satzvorgänge aufgeführt.
HashSet-Vorgang | LINQ-Entsprechung |
---|---|
UnionWith | Union |
IntersectWith | Intersect |
ExceptWith | Except |
Nicht angegeben. | Distinct |
SymmetricExceptWith | Nicht angegeben. |
Overlaps | Nicht angegeben. |
IsSubsetOf | Nicht angegeben. |
IsProperSubsetOf | Nicht angegeben. |
IsSupersetOf | Nicht angegeben. |
IsProperSupersetOf | Nicht angegeben. |
SetEquals | Nicht angegeben. |